/* Dinh nghia do thi */
typedef struct graph *Graph;

/* khoi tao do thi moi voi n dinh co nhan tu 0...n-1, khong co canh*/
Graph graph_create(int n);

/* Huy toan bo Do thi */
void graph_destroy(Graph);

/* them canh vao Do thi cho truoc */
/* co the them nhieu lan */
void graph_add_edge(Graph, int source, int sink);

/* Tra ve so dinh/canh cua do thi */
int graph_vertex_count(Graph);
int graph_edge_count(Graph);

/* Tra ve bac (bac ngoai- so cac dinh u ke voi source ma (source,u) la canh) cua mot dinh cho truoc */
int graph_out_degree(Graph, int source);

/* Tra ve 1, neu ton tai canh (source, sink), nguoc lai tra ve 0 */
int graph_has_edge(Graph, int source, int sink);
